package com.scs.application.modules.sys.service;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.scs.application.core.service.IBaseService;
import com.scs.application.modules.sys.dto.UserSelectDTO;
import com.scs.application.modules.sys.entity.User;
import com.scs.application.modules.sys.vo.LoginResult;
import org.springframework.web.multipart.MultipartFile;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public interface UserService extends IBaseService<User> {

    User findByCode(String code);

    IPage<HashMap<String,Object>> getUserList(Page page, Wrapper wrapper);

    /**
     * 对明文密码加密
     * @param plainPassword
     * @return
     */
    String encryptPassword(String plainPassword);

    /**
     * 账号登录
     * @param code 登录账号
     * @param plainPassword 明文密码
     * @return 登录成功结果
     */
    LoginResult login(String code, String plainPassword,String isCheck,String deviceType);

    /**
     * 单点登录
     * @param ticket 单点登录访问时传入的票据
     * @return 登录成功结果
     */
    LoginResult SingleSignOn(String ticket);
    /**
     * 当前账号登出
     */
    void logout();

    /**
     * 返回用户选择树的数据源
     */
    List<UserSelectDTO> getUserTree();

    /**
     * 修改密码
     */
    void password(String oldPassword, String newPassword);

    /**
     * 重置密码
     * @param id
     */
    void resetPwd(String id);

    /**
     * 保存上传的图片
     * @param file
     * @param userId
     * @return
     */
    Map uploadPicture(MultipartFile file, String userId);

    List<User> listByRole(String roleId);

    /**
    * @Description：根据工号查询
    */
    User findByWorkNo(String WorkNo);

    void updateUserState(String type, String userId, String stateKey, String stateValue);
}
